import { createI18n } from 'vue-i18n'
import cnLocal from 'element-plus/es/locale/lang/zh-cn'
import enLocal from 'element-plus/es/locale/lang/en'
import store from '@/stores'
import { useAppStore } from '@/stores/modules/app'
// element-plus 国际化文件

const elementLocales = {
  enLocal,
  cnLocal
}
const appStore = useAppStore(store)

// 框架 国际化文件
const languageAll = import.meta.glob('./lang/**/*.js', { eager: true })

const modulePaths = Object.keys(languageAll)
// 正则表达式匹配文件名的前缀和文件名本身
const prefixRegex = /^\.\/(\w+)\/(.+)\.\w+$/

// 定义一个对象用于存储分类后的文件
const categorizedFiles = {}
modulePaths.forEach((modulePath) => {
  const path = modulePath.replace('/lang', '')
  const matches = path.match(prefixRegex)
  if (matches && matches[1] && matches[2]) {
    const prefix = matches[1]
    const fileName = matches[2]
    if (!categorizedFiles[prefix]) {
      categorizedFiles[prefix] = {}
    }
    const module = languageAll[modulePath]
    if (modulePath.includes('/cn')) {
      const pathFileNames = Object.keys(module.default)
      pathFileNames.forEach((key) => {
        categorizedFiles[prefix][key] = module.default[key]
      })
    } else {
      categorizedFiles[prefix][fileName] = module.default
    }
    categorizedFiles[prefix].el = elementLocales[`${prefix}Local`]
  }
})
export const messages = {
  ...categorizedFiles
}

export const i18n = createI18n({
  legacy: false, // 如果想在composition api中使用需要设置为false
  locale: appStore.language,
  messages,
  globalInjection: true // 如果设置true, $t() 函数将注册到全局
})
